/*!
 * \file plugintemplate.h
 * \brief 插件实现模板文件
 * \author 张龙星
 * \version 1.00.00
 * \date 2015-08-04
 * \copyright 航天恒星科技有限公司遥感测绘事业部
 * \details 编码文件使用UTF-8编码格式，使用匈牙利命名法，使用doxygen注释样式
 *          类名采用RSGIS开头，动态库抛出标识采用XXXX_EXPORT
 */
#ifndef PLUGINTEMPLATE_H
#define PLUGINTEMPLATE_H

#include <QAction>
#include "plugintemplate_global.h"
#include "../rsgisplugin.h"

/*!
 * \brief The PluginTemplate是插件的实现功能类，该类继承于RSGISPlugin类，实现基类中的虚函数
 * 实现，该类为实现插件的模板类，其它插件的编写可以参考该类实现。
 */
class PLUGINTEMPLATESHARED_EXPORT PluginTemplate : public QObject , public RSGISPlugin
{
    Q_OBJECT

public:
    /*!
     * \brief PluginTemplate 构造函数
     * \param pInterface接口指针
     */
    PluginTemplate( RSGISInterface* pInterface );

    /*!
     * \brief ~PluginTemplate 析构函数
     */
    virtual ~PluginTemplate();

public slots:
    /*!
     * \brief initGui 初始化UI界面
     */
    virtual void initGui();

    /*!
     * \brief run 界面UI的响应函数
     */
    void run();

    /*!
     * \brief unload 卸载UI界面
     */
    virtual void unload();

    /*!
     * \brief help 插件帮助
     */
    void help();

private:
    /*!
     * \brief m_PluginType 插件类型
     */
    int m_PluginType;

    /*!
     * \brief m_Interface 插件接口，通过插件接口可以调用主框架下的函数
     */
    RSGISInterface *m_Interface;

    /*!
     * \brief m_QActionPointer 界面UI指针，也可以是其它界面UI元素
     */
    QAction * m_QActionPointer;


};

#endif // PLUGINTEMPLATE_H
